﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using SISCON.Bl;
using SISCON.Vo;
using SISCON.Common;
using SISCON.Model;

namespace SISCON.Service
{
    [WebService(Namespace = "http://SISCON.mx/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    [System.Web.Script.Services.ScriptService]
    public class CourseServices : System.Web.Services.WebService
    {
        private CourseBL _CourseBL = new CourseBL();
 
        [WebMethod]
        [System.Xml.Serialization.XmlInclude(typeof(List<Course>))]
        public ResultObject GetAllCourses(string sessionUUID)
        {
            try
            {
                return new ResultObject(_CourseBL.GetAllCourses(sessionUUID), null);
            }
            catch (Exception ex)
            {
                return new ResultObject(null, ex is SISCONException ? ex.Message : "No fue posible obtener la lista de cursos. Favor de intentar más tarde.");
            }
        }

        [WebMethod]
        [System.Xml.Serialization.XmlInclude(typeof(List<Course>))]
        public ResultObject GetCourse(string sessionUUID, string courseCode, string courseName)
        {
            try
            {
                return new ResultObject(_CourseBL.GetCourse(sessionUUID, courseCode, courseName), null);
            }
            catch (Exception ex)
            {
                return new ResultObject(null, ex is SISCONException ? ex.Message : "No fue posible obtener el curso. Favor de intentar más tarde.");
            }
        }

        [WebMethod]
        [System.Xml.Serialization.XmlInclude(typeof(List<Course>))]
        public ResultObject GetCoursesByName(string sessionUUID, string courseName)
        {
            try
            {
                return new ResultObject(_CourseBL.GetCoursesByName(sessionUUID, courseName), null);
            }
            catch (Exception ex)
            {
                return new ResultObject(null, ex is SISCONException ? ex.Message : "No fue posible obtener la lista de cursos. Favor de intentar más tarde.");
            }
        }

        [WebMethod]
        [System.Xml.Serialization.XmlInclude(typeof(List<Course>))]
        public ResultObject GetCoursesByKey(string sessionUUID, string courseKey)
        {
            try
            {
                return new ResultObject(_CourseBL.GetCoursesByKey(sessionUUID, courseKey), null);
            }
            catch (Exception ex)
            {
                return new ResultObject(null, ex is SISCONException ? ex.Message : "No fue posible obtener la lista de cursos. Favor de intentar más tarde.");
            }
        }

        [WebMethod]
        public ResultObject SaveCoursepublic(string sessionUUID, string modifiedCourseId, string courseCode, string courseNumber, string courseName, bool isActive, string userId)
        {
            try
            {
                _CourseBL.SaveCourse(sessionUUID, modifiedCourseId, courseCode, courseNumber, courseName, isActive, userId);
                return new ResultObject("ok", null);
            }
            catch (Exception ex)
            {
                return new ResultObject(null, ex is SISCONException ? ex.Message : "No fue posible guardar los datos del curso. Favor de intentar más tarde.");
            }
        }

        [WebMethod]
        public ResultObject DeleteCourse(string sessionUUID, string courseId)
        {
            try
            {
                _CourseBL.DeleteCourse(sessionUUID, courseId);
                return new ResultObject("ok", null);
            }
            catch (Exception ex)
            {
                return new ResultObject(null, ex is SISCONException ? ex.Message : "No fue posible eliminar el curso. Favor de intentar más tarde.");
            }
        }


    }
}
